/*! PhotoSwipe - v4.1.3 - 2019-01-08
* http://photoswipe.com
* Copyright (c) 2019 Dmitry Semenov; */
!function(a, b) {
    "function" == typeof define && define.amd ? define(b) : "object" == typeof exports ? module.exports = b() : a.PhotoSwipe = b()
}(this, function() {
    "use strict";
    var a = function(a, b, c, d) {
        var e = {
            features: null,
            bind: function(a, b, c, d) {
                var e = (d ? "remove" : "add") + "EventListener";
                b = b.split(" ");
                for (var f = 0; f < b.length; f++)
                    b[f] && a[e](b[f], c, !1)
            },
            isArray: function(a) {
                return a instanceof Array
            },
            createEl: function(a, b) {
                var c = document.createElement(b || "div");
                return a && (c.className = a),
                c
            },
            getScrollY: function() {
                var a = window.pageYOffset;
                return void 0 !== a ? a : document.documentElement.scrollTop
            },
            unbind: function(a, b, c) {
                e.bind(a, b, c, !0)
            },
            removeClass: function(a, b) {
                var c = new RegExp("(\\s|^)" + b + "(\\s|$)");
                a.className = a.className.replace(c, " ").replace(/^\s\s*/, "").replace(/\s\s*$/, "")
            },
            addClass: function(a, b) {
                e.hasClass(a, b) || (a.className += (a.className ? " " : "") + b)
            },
            hasClass: function(a, b) {
                return a.className && new RegExp("(^|\\s)" + b + "(\\s|$)").test(a.className)
            },
            getChildByClass: function(a, b) {
                for (var c = a.firstChild; c; ) {
                    if (e.hasClass(c, b))
                        return c;
                    c = c.nextSibling
                }
            },
            arraySearch: function(a, b, c) {
                for (var d = a.length; d--; )
                    if (a[d][c] === b)
                        return d;
                return -1
            },
            extend: function(a, b, c) {
                for (var d in b)
                    if (b.hasOwnProperty(d)) {
                        if (c && a.hasOwnProperty(d))
                            continue;
                        a[d] = b[d]
                    }
            },
            easing: {
                sine: {
                    out: function(a) {
                        return Math.sin(a * (Math.PI / 2))
                    },
                    inOut: function(a) {
                        return -(Math.cos(Math.PI * a) - 1) / 2
                    }
                },
                cubic: {
                    out: function(a) {
                        return --a * a * a + 1
                    }
                }
            },
            detectFeatures: function() {
                if (e.features)
                    return e.features;
                var a = e.createEl()
                  , b = a.style
                  , c = ""
                  , d = {};
                if (d.oldIE = document.all && !document.addEventListener,
                d.touch = "ontouchstart"in window,
                window.requestAnimationFrame && (d.raf = window.requestAnimationFrame,
                d.caf = window.cancelAnimationFrame),
                d.pointerEvent = !!window.PointerEvent || navigator.msPointerEnabled,
                !d.pointerEvent) {
                    var f = navigator.userAgent;
                    if (/iP(hone|od)/.test(navigator.platform)) {
                        var g = navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/);
                        g && g.length > 0 && (g = parseInt(g[1], 10),
                        g >= 1 && g < 8 && (d.isOldIOSPhone = !0))
                    }
                    var h = f.match(/Android\s([0-9\.]*)/)
                      , i = h ? h[1] : 0;
                    i = parseFloat(i),
                    i >= 1 && (i < 4.4 && (d.isOldAndroid = !0),
                    d.androidVersion = i),
                    d.isMobileOpera = /opera mini|opera mobi/i.test(f)
                }
                for (var j, k, l = ["transform", "perspective", "animationName"], m = ["", "webkit", "Moz", "ms", "O"], n = 0; n < 4; n++) {
                    c = m[n];
                    for (var o = 0; o < 3; o++)
                        j = l[o],
                        k = c + (c ? j.charAt(0).toUpperCase() + j.slice(1) : j),
                        !d[j] && k in b && (d[j] = k);
                    c && !d.raf && (c = c.toLowerCase(),
                    d.raf = window[c + "RequestAnimationFrame"],
                    d.raf && (d.caf = window[c + "CancelAnimationFrame"] || window[c + "CancelRequestAnimationFrame"]))
                }
                if (!d.raf) {
                    var p = 0;
                    d.raf = function(a) {
                        var b = (new Date).getTime()
                          , c = Math.max(0, 16 - (b - p))
                          , d = window.setTimeout(function() {
                            a(b + c)
                        }, c);
                        return p = b + c,
                        d
                    }
                    ,
                    d.caf = function(a) {
                        clearTimeout(a)
                    }
                }
                return d.svg = !!document.createElementNS && !!document.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGRect,
                e.features = d,
                d
            }
        };
        e.detectFeatures(),
        e.features.oldIE && (e.bind = function(a, b, c, d) {
            b = b.split(" ");
            for (var e, f = (d ? "detach" : "attach") + "Event", g = function() {
                c.handleEvent.call(c)
            }, h = 0; h < b.length; h++)
                if (e = b[h])
                    if ("object" == typeof c && c.handleEvent) {
                        if (d) {
                            if (!c["oldIE" + e])
                                return !1
                        } else
                            c["oldIE" + e] = g;
                        a[f]("on" + e, c["oldIE" + e])
                    } else
                        a[f]("on" + e, c)
        }
        );
        var f = this
          , g = 25
          , h = 3
          , i = {
            allowPanToNext: !0,
            spacing: .12,
            bgOpacity: 1,
            mouseUsed: !1,
            loop: !0,
            pinchToClose: !0,
            closeOnScroll: !0,
            closeOnVerticalDrag: !0,
            verticalDragRange: .75,
            hideAnimationDuration: 333,
            showAnimationDuration: 333,
            showHideOpacity: !1,
            focus: !0,
            escKey: !0,
            arrowKeys: !0,
            mainScrollEndFriction: .35,
            panEndFriction: .35,
            isClickableElement: function(a) {
                return "A" === a.tagName
            },
            getDoubleTapZoom: function(a, b) {
                return a ? 1 : b.initialZoomLevel < .7 ? 1 : 1.33
            },
            maxSpreadZoom: 1.33,
            modal: !0,
            scaleMode: "fit"
        };
        e.extend(i, d);
        var j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _, aa, ba, ca, da, ea, fa, ga, ha, ia, ja, ka, la, ma = function() {
            return {
                x: 0,
                y: 0
            }
        }, na = ma(), oa = ma(), pa = ma(), qa = {}, ra = 0, sa = {}, ta = ma(), ua = 0, va = !0, wa = [], xa = {}, ya = !1, za = function(a, b) {
            e.extend(f, b.publicMethods),
            wa.push(a)
        }, Aa = function(a) {
            var b = ac();
            return a > b - 1 ? a - b : a < 0 ? b + a : a
        }, Ba = {}, Ca = function(a, b) {
            return Ba[a] || (Ba[a] = []),
            Ba[a].push(b)
        }, Da = function(a) {
            var b = Ba[a];
            if (b) {
                var c = Array.prototype.slice.call(arguments);
                c.shift();
                for (var d = 0; d < b.length; d++)
                    b[d].apply(f, c)
            }
        }, Ea = function() {
            return (new Date).getTime()
        }, Fa = function(a) {
            ja = a,
            f.bg.style.opacity = a * i.bgOpacity
        }, Ga = function(a, b, c, d, e) {
            (!ya || e && e !== f.currItem) && (d /= e ? e.fitRatio : f.currItem.fitRatio),
            a[E] = u + b + "px, " + c + "px" + v + " scale(" + d + ")"
        }, Ha = function(a) {
            ea && (a && (s > f.currItem.fitRatio ? ya || (mc(f.currItem, !1, !0),
            ya = !0) : ya && (mc(f.currItem),
            ya = !1)),
            Ga(ea, pa.x, pa.y, s))
        }, Ia = function(a) {
            a.container && Ga(a.container.style, a.initialPosition.x, a.initialPosition.y, a.initialZoomLevel, a)
        }, Ja = function(a, b) {
            b[E] = u + a + "px, 0px" + v
        }, Ka = function(a, b) {
            if (!i.loop && b) {
                var c = m + (ta.x * ra - a) / ta.x
                  , d = Math.round(a - tb.x);
                (c < 0 && d > 0 || c >= ac() - 1 && d < 0) && (a = tb.x + d * i.mainScrollEndFriction)
            }
            tb.x = a,
            Ja(a, n)
        }, La = function(a, b) {
            var c = ub[a] - sa[a];
            return oa[a] + na[a] + c - c * (b / t)
        }, Ma = function(a, b) {
            a.x = b.x,
            a.y = b.y,
            b.id && (a.id = b.id)
        }, Na = function(a) {
            a.x = Math.round(a.x),
            a.y = Math.round(a.y)
        }, Oa = null, Pa = function() {
            Oa && (e.unbind(document, "mousemove", Pa),
            e.addClass(a, "pswp--has_mouse"),
            i.mouseUsed = !0,
            Da("mouseUsed")),
            Oa = setTimeout(function() {
                Oa = null
            }, 100)
        }, Qa = function() {
            e.bind(document, "keydown", f),
            N.transform && e.bind(f.scrollWrap, "click", f),
            i.mouseUsed || e.bind(document, "mousemove", Pa),
            e.bind(window, "resize scroll orientationchange", f),
            Da("bindEvents")
        }, Ra = function() {
            e.unbind(window, "resize scroll orientationchange", f),
            e.unbind(window, "scroll", r.scroll),
            e.unbind(document, "keydown", f),
            e.unbind(document, "mousemove", Pa),
            N.transform && e.unbind(f.scrollWrap, "click", f),
            V && e.unbind(window, p, f),
            clearTimeout(O),
            Da("unbindEvents")
        }, Sa = function(a, b) {
            var c = ic(f.currItem, qa, a);
            return b && (da = c),
            c
        }, Ta = function(a) {
            return a || (a = f.currItem),
            a.initialZoomLevel
        }, Ua = function(a) {
            return a || (a = f.currItem),
            a.w > 0 ? i.maxSpreadZoom : 1
        }, Va = function(a, b, c, d) {
            return d === f.currItem.initialZoomLevel ? (c[a] = f.currItem.initialPosition[a],
            !0) : (c[a] = La(a, d),
            c[a] > b.min[a] ? (c[a] = b.min[a],
            !0) : c[a] < b.max[a] && (c[a] = b.max[a],
            !0))
        }, Wa = function() {
            if (E) {
                var b = N.perspective && !G;
                return u = "translate" + (b ? "3d(" : "("),
                void (v = N.perspective ? ", 0px)" : ")")
            }
            E = "left",
            e.addClass(a, "pswp--ie"),
            Ja = function(a, b) {
                b.left = a + "px"
            }
            ,
            Ia = function(a) {
                var b = a.fitRatio > 1 ? 1 : a.fitRatio
                  , c = a.container.style
                  , d = b * a.w
                  , e = b * a.h;
                c.width = d + "px",
                c.height = e + "px",
                c.left = a.initialPosition.x + "px",
                c.top = a.initialPosition.y + "px"
            }
            ,
            Ha = function() {
                if (ea) {
                    var a = ea
                      , b = f.currItem
                      , c = b.fitRatio > 1 ? 1 : b.fitRatio
                      , d = c * b.w
                      , e = c * b.h;
                    a.width = d + "px",
                    a.height = e + "px",
                    a.left = pa.x + "px",
                    a.top = pa.y + "px"
                }
            }
        }, Xa = function(a) {
            var b = "";
            i.escKey && 27 === a.keyCode ? b = "close" : i.arrowKeys && (37 === a.keyCode ? b = "prev" : 39 === a.keyCode && (b = "next")),
            b && (a.ctrlKey || a.altKey || a.shiftKey || a.metaKey || (a.preventDefault ? a.preventDefault() : a.returnValue = !1,
            f[b]()))
        }, Ya = function(a) {
            a && (Y || X || fa || T) && (a.preventDefault(),
            a.stopPropagation())
        }, Za = function() {
            f.setScrollOffset(0, e.getScrollY())
        }, $a = {}, _a = 0, ab = function(a) {
            $a[a] && ($a[a].raf && I($a[a].raf),
            _a--,
            delete $a[a])
        }, bb = function(a) {
            $a[a] && ab(a),
            $a[a] || (_a++,
            $a[a] = {})
        }, cb = function() {
            for (var a in $a)
                $a.hasOwnProperty(a) && ab(a)
        }, db = function(a, b, c, d, e, f, g) {
            var h, i = Ea();
            bb(a);
            var j = function() {
                if ($a[a]) {
                    if (h = Ea() - i,
                    h >= d)
                        return ab(a),
                        f(c),
                        void (g && g());
                    f((c - b) * e(h / d) + b),
                    $a[a].raf = H(j)
                }
            };
            j()
        }, eb = {
            shout: Da,
            listen: Ca,
            viewportSize: qa,
            options: i,
            isMainScrollAnimating: function() {
                return fa
            },
            getZoomLevel: function() {
                return s
            },
            getCurrentIndex: function() {
                return m
            },
            isDragging: function() {
                return V
            },
            isZooming: function() {
                return aa
            },
            setScrollOffset: function(a, b) {
                sa.x = a,
                M = sa.y = b,
                Da("updateScrollOffset", sa)
            },
            applyZoomPan: function(a, b, c, d) {
                pa.x = b,
                pa.y = c,
                s = a,
                Ha(d)
            },
            init: function() {
                if (!j && !k) {
                    var c;
                    f.framework = e,
                    f.template = a,
                    f.bg = e.getChildByClass(a, "pswp__bg"),
                    J = a.className,
                    j = !0,
                    N = e.detectFeatures(),
                    H = N.raf,
                    I = N.caf,
                    E = N.transform,
                    L = N.oldIE,
                    f.scrollWrap = e.getChildByClass(a, "pswp__scroll-wrap"),
                    f.container = e.getChildByClass(f.scrollWrap, "pswp__container"),
                    n = f.container.style,
                    f.itemHolders = y = [{
                        el: f.container.children[0],
                        wrap: 0,
                        index: -1
                    }, {
                        el: f.container.children[1],
                        wrap: 0,
                        index: -1
                    }, {
                        el: f.container.children[2],
                        wrap: 0,
                        index: -1
                    }],
                    y[0].el.style.display = y[2].el.style.display = "none",
                    Wa(),
                    r = {
                        resize: f.updateSize,
                        orientationchange: function() {
                            clearTimeout(O),
                            O = setTimeout(function() {
                                qa.x !== f.scrollWrap.clientWidth && f.updateSize()
                            }, 500)
                        },
                        scroll: Za,
                        keydown: Xa,
                        click: Ya
                    };
                    var d = N.isOldIOSPhone || N.isOldAndroid || N.isMobileOpera;
                    for (N.animationName && N.transform && !d || (i.showAnimationDuration = i.hideAnimationDuration = 0),
                    c = 0; c < wa.length; c++)
                        f["init" + wa[c]]();
                    if (b) {
                        var g = f.ui = new b(f,e);
                        g.init()
                    }
                    Da("firstUpdate"),
                    m = m || i.index || 0,
                    (isNaN(m) || m < 0 || m >= ac()) && (m = 0),
                    f.currItem = _b(m),
                    (N.isOldIOSPhone || N.isOldAndroid) && (va = !1),
                    a.setAttribute("aria-hidden", "false"),
                    i.modal && (va ? a.style.position = "fixed" : (a.style.position = "absolute",
                    a.style.top = e.getScrollY() + "px")),
                    void 0 === M && (Da("initialLayout"),
                    M = K = e.getScrollY());
                    var l = "pswp--open ";
                    for (i.mainClass && (l += i.mainClass + " "),
                    i.showHideOpacity && (l += "pswp--animate_opacity "),
                    l += G ? "pswp--touch" : "pswp--notouch",
                    l += N.animationName ? " pswp--css_animation" : "",
                    l += N.svg ? " pswp--svg" : "",
                    e.addClass(a, l),
                    f.updateSize(),
                    o = -1,
                    ua = null,
                    c = 0; c < h; c++)
                        Ja((c + o) * ta.x, y[c].el.style);
                    L || e.bind(f.scrollWrap, q, f),
                    Ca("initialZoomInEnd", function() {
                        f.setContent(y[0], m - 1),
                        f.setContent(y[2], m + 1),
                        y[0].el.style.display = y[2].el.style.display = "block",
                        i.focus && a.focus(),
                        Qa()
                    }),
                    f.setContent(y[1], m),
                    f.updateCurrItem(),
                    Da("afterInit"),
                    va || (w = setInterval(function() {
                        _a || V || aa || s !== f.currItem.initialZoomLevel || f.updateSize()
                    }, 1e3)),
                    e.addClass(a, "pswp--visible")
                }
            },
            close: function() {
                j && (j = !1,
                k = !0,
                Da("close"),
                Ra(),
                cc(f.currItem, null, !0, f.destroy))
            },
            destroy: function() {
                Da("destroy"),
                Xb && clearTimeout(Xb),
                a.setAttribute("aria-hidden", "true"),
                a.className = J,
                w && clearInterval(w),
                e.unbind(f.scrollWrap, q, f),
                e.unbind(window, "scroll", f),
                zb(),
                cb(),
                Ba = null
            },
            panTo: function(a, b, c) {
                c || (a > da.min.x ? a = da.min.x : a < da.max.x && (a = da.max.x),
                b > da.min.y ? b = da.min.y : b < da.max.y && (b = da.max.y)),
                pa.x = a,
                pa.y = b,
                Ha()
            },
            handleEvent: function(a) {
                a = a || window.event,
                r[a.type] && r[a.type](a)
            },
            goTo: function(a) {
                a = Aa(a);
                var b = a - m;
                ua = b,
                m = a,
                f.currItem = _b(m),
                ra -= b,
                Ka(ta.x * ra),
                cb(),
                fa = !1,
                f.updateCurrItem()
            },
            next: function() {
                f.goTo(m + 1)
            },
            prev: function() {
                f.goTo(m - 1)
            },
            updateCurrZoomItem: function(a) {
                if (a && Da("beforeChange", 0),
                y[1].el.children.length) {
                    var b = y[1].el.children[0];
                    ea = e.hasClass(b, "pswp__zoom-wrap") ? b.style : null
                } else
                    ea = null;
                da = f.currItem.bounds,
                t = s = f.currItem.initialZoomLevel,
                pa.x = da.center.x,
                pa.y = da.center.y,
                a && Da("afterChange")
            },
            invalidateCurrItems: function() {
                x = !0;
                for (var a = 0; a < h; a++)
                    y[a].item && (y[a].item.needsUpdate = !0)
            },
            updateCurrItem: function(a) {
                if (0 !== ua) {
                    var b, c = Math.abs(ua);
                    if (!(a && c < 2)) {
                        f.currItem = _b(m),
                        ya = !1,
                        Da("beforeChange", ua),
                        c >= h && (o += ua + (ua > 0 ? -h : h),
                        c = h);
                        for (var d = 0; d < c; d++)
                            ua > 0 ? (b = y.shift(),
                            y[h - 1] = b,
                            o++,
                            Ja((o + 2) * ta.x, b.el.style),
                            f.setContent(b, m - c + d + 1 + 1)) : (b = y.pop(),
                            y.unshift(b),
                            o--,
                            Ja(o * ta.x, b.el.style),
                            f.setContent(b, m + c - d - 1 - 1));
                        if (ea && 1 === Math.abs(ua)) {
                            var e = _b(z);
                            e.initialZoomLevel !== s && (ic(e, qa),
                            mc(e),
                            Ia(e))
                        }
                        ua = 0,
                        f.updateCurrZoomItem(),
                        z = m,
                        Da("afterChange")
                    }
                }
            },
            updateSize: function(b) {
                if (!va && i.modal) {
                    var c = e.getScrollY();
                    if (M !== c && (a.style.top = c + "px",
                    M = c),
                    !b && xa.x === window.innerWidth && xa.y === window.innerHeight)
                        return;
                    xa.x = window.innerWidth,
                    xa.y = window.innerHeight,
                    a.style.height = xa.y + "px"
                }
                if (qa.x = f.scrollWrap.clientWidth,
                qa.y = f.scrollWrap.clientHeight,
                Za(),
                ta.x = qa.x + Math.round(qa.x * i.spacing),
                ta.y = qa.y,
                Ka(ta.x * ra),
                Da("beforeResize"),
                void 0 !== o) {
                    for (var d, g, j, k = 0; k < h; k++)
                        d = y[k],
                        Ja((k + o) * ta.x, d.el.style),
                        j = m + k - 1,
                        i.loop && ac() > 2 && (j = Aa(j)),
                        g = _b(j),
                        g && (x || g.needsUpdate || !g.bounds) ? (f.cleanSlide(g),
                        f.setContent(d, j),
                        1 === k && (f.currItem = g,
                        f.updateCurrZoomItem(!0)),
                        g.needsUpdate = !1) : d.index === -1 && j >= 0 && f.setContent(d, j),
                        g && g.container && (ic(g, qa),
                        mc(g),
                        Ia(g));
                    x = !1
                }
                t = s = f.currItem.initialZoomLevel,
                da = f.currItem.bounds,
                da && (pa.x = da.center.x,
                pa.y = da.center.y,
                Ha(!0)),
                Da("resize")
            },
            zoomTo: function(a, b, c, d, f) {
                b && (t = s,
                ub.x = Math.abs(b.x) - pa.x,
                ub.y = Math.abs(b.y) - pa.y,
                Ma(oa, pa));
                var g = Sa(a, !1)
                  , h = {};
                Va("x", g, h, a),
                Va("y", g, h, a);
                var i = s
                  , j = {
                    x: pa.x,
                    y: pa.y
                };
                Na(h);
                var k = function(b) {
                    1 === b ? (s = a,
                    pa.x = h.x,
                    pa.y = h.y) : (s = (a - i) * b + i,
                    pa.x = (h.x - j.x) * b + j.x,
                    pa.y = (h.y - j.y) * b + j.y),
                    f && f(b),
                    Ha(1 === b)
                };
                c ? db("customZoomTo", 0, 1, c, d || e.easing.sine.inOut, k) : k(1)
            }
        }, fb = 30, gb = 10, hb = {}, ib = {}, jb = {}, kb = {}, lb = {}, mb = [], nb = {}, ob = [], pb = {}, qb = 0, rb = ma(), sb = 0, tb = ma(), ub = ma(), vb = ma(), wb = function(a, b) {
            return a.x === b.x && a.y === b.y
        }, xb = function(a, b) {
            return Math.abs(a.x - b.x) < g && Math.abs(a.y - b.y) < g
        }, yb = function(a, b) {
            return pb.x = Math.abs(a.x - b.x),
            pb.y = Math.abs(a.y - b.y),
            Math.sqrt(pb.x * pb.x + pb.y * pb.y)
        }, zb = function() {
            Z && (I(Z),
            Z = null)
        }, Ab = function() {
            V && (Z = H(Ab),
            Qb())
        }, Bb = function() {
            return !("fit" === i.scaleMode && s === f.currItem.initialZoomLevel)
        }, Cb = function(a, b) {
            return !(!a || a === document) && (!(a.getAttribute("class") && a.getAttribute("class").indexOf("pswp__scroll-wrap") > -1) && (b(a) ? a : Cb(a.parentNode, b)))
        }, Db = {}, Eb = function(a, b) {
            return Db.prevent = !Cb(a.target, i.isClickableElement),
            Da("preventDragEvent", a, b, Db),
            Db.prevent
        }, Fb = function(a, b) {
            return b.x = a.pageX,
            b.y = a.pageY,
            b.id = a.identifier,
            b
        }, Gb = function(a, b, c) {
            c.x = .5 * (a.x + b.x),
            c.y = .5 * (a.y + b.y)
        }, Hb = function(a, b, c) {
            if (a - Q > 50) {
                var d = ob.length > 2 ? ob.shift() : {};
                d.x = b,
                d.y = c,
                ob.push(d),
                Q = a
            }
        }, Ib = function() {
            var a = pa.y - f.currItem.initialPosition.y;
            return 1 - Math.abs(a / (qa.y / 2))
        }, Jb = {}, Kb = {}, Lb = [], Mb = function(a) {
            for (; Lb.length > 0; )
                Lb.pop();
            return F ? (la = 0,
            mb.forEach(function(a) {
                0 === la ? Lb[0] = a : 1 === la && (Lb[1] = a),
                la++
            })) : a.type.indexOf("touch") > -1 ? a.touches && a.touches.length > 0 && (Lb[0] = Fb(a.touches[0], Jb),
            a.touches.length > 1 && (Lb[1] = Fb(a.touches[1], Kb))) : (Jb.x = a.pageX,
            Jb.y = a.pageY,
            Jb.id = "",
            Lb[0] = Jb),
            Lb
        }, Nb = function(a, b) {
            var c, d, e, g, h = 0, j = pa[a] + b[a], k = b[a] > 0, l = tb.x + b.x, m = tb.x - nb.x;
            return c = j > da.min[a] || j < da.max[a] ? i.panEndFriction : 1,
            j = pa[a] + b[a] * c,
            !i.allowPanToNext && s !== f.currItem.initialZoomLevel || (ea ? "h" !== ga || "x" !== a || X || (k ? (j > da.min[a] && (c = i.panEndFriction,
            h = da.min[a] - j,
            d = da.min[a] - oa[a]),
            (d <= 0 || m < 0) && ac() > 1 ? (g = l,
            m < 0 && l > nb.x && (g = nb.x)) : da.min.x !== da.max.x && (e = j)) : (j < da.max[a] && (c = i.panEndFriction,
            h = j - da.max[a],
            d = oa[a] - da.max[a]),
            (d <= 0 || m > 0) && ac() > 1 ? (g = l,
            m > 0 && l < nb.x && (g = nb.x)) : da.min.x !== da.max.x && (e = j))) : g = l,
            "x" !== a) ? void (fa || $ || s > f.currItem.fitRatio && (pa[a] += b[a] * c)) : (void 0 !== g && (Ka(g, !0),
            $ = g !== nb.x),
            da.min.x !== da.max.x && (void 0 !== e ? pa.x = e : $ || (pa.x += b.x * c)),
            void 0 !== g)
        }, Ob = function(a) {
            if (!("mousedown" === a.type && a.button > 0)) {
                if ($b)
                    return void a.preventDefault();
                if (!U || "mousedown" !== a.type) {
                    if (Eb(a, !0) && a.preventDefault(),
                    Da("pointerDown"),
                    F) {
                        var b = e.arraySearch(mb, a.pointerId, "id");
                        b < 0 && (b = mb.length),
                        mb[b] = {
                            x: a.pageX,
                            y: a.pageY,
                            id: a.pointerId
                        }
                    }
                    var c = Mb(a)
                      , d = c.length;
                    _ = null,
                    cb(),
                    V && 1 !== d || (V = ha = !0,
                    e.bind(window, p, f),
                    S = ka = ia = T = $ = Y = W = X = !1,
                    ga = null,
                    Da("firstTouchStart", c),
                    Ma(oa, pa),
                    na.x = na.y = 0,
                    Ma(kb, c[0]),
                    Ma(lb, kb),
                    nb.x = ta.x * ra,
                    ob = [{
                        x: kb.x,
                        y: kb.y
                    }],
                    Q = P = Ea(),
                    Sa(s, !0),
                    zb(),
                    Ab()),
                    !aa && d > 1 && !fa && !$ && (t = s,
                    X = !1,
                    aa = W = !0,
                    na.y = na.x = 0,
                    Ma(oa, pa),
                    Ma(hb, c[0]),
                    Ma(ib, c[1]),
                    Gb(hb, ib, vb),
                    ub.x = Math.abs(vb.x) - pa.x,
                    ub.y = Math.abs(vb.y) - pa.y,
                    ba = ca = yb(hb, ib))
                }
            }
        }, Pb = function(a) {
            if (a.preventDefault(),
            F) {
                var b = e.arraySearch(mb, a.pointerId, "id");
                if (b > -1) {
                    var c = mb[b];
                    c.x = a.pageX,
                    c.y = a.pageY
                }
            }
            if (V) {
                var d = Mb(a);
                if (ga || Y || aa)
                    _ = d;
                else if (tb.x !== ta.x * ra)
                    ga = "h";
                else {
                    var f = Math.abs(d[0].x - kb.x) - Math.abs(d[0].y - kb.y);
                    Math.abs(f) >= gb && (ga = f > 0 ? "h" : "v",
                    _ = d)
                }
            }
        }, Qb = function() {
            if (_) {
                var a = _.length;
                if (0 !== a)
                    if (Ma(hb, _[0]),
                    jb.x = hb.x - kb.x,
                    jb.y = hb.y - kb.y,
                    aa && a > 1) {
                        if (kb.x = hb.x,
                        kb.y = hb.y,
                        !jb.x && !jb.y && wb(_[1], ib))
                            return;
                        Ma(ib, _[1]),
                        X || (X = !0,
                        Da("zoomGestureStarted"));
                        var b = yb(hb, ib)
                          , c = Vb(b);
                        c > f.currItem.initialZoomLevel + f.currItem.initialZoomLevel / 15 && (ka = !0);
                        var d = 1
                          , e = Ta()
                          , g = Ua();
                        if (c < e)
                            if (i.pinchToClose && !ka && t <= f.currItem.initialZoomLevel) {
                                var h = e - c
                                  , j = 1 - h / (e / 1.2);
                                Fa(j),
                                Da("onPinchClose", j),
                                ia = !0
                            } else
                                d = (e - c) / e,
                                d > 1 && (d = 1),
                                c = e - d * (e / 3);
                        else
                            c > g && (d = (c - g) / (6 * e),
                            d > 1 && (d = 1),
                            c = g + d * e);
                        d < 0 && (d = 0),
                        ba = b,
                        Gb(hb, ib, rb),
                        na.x += rb.x - vb.x,
                        na.y += rb.y - vb.y,
                        Ma(vb, rb),
                        pa.x = La("x", c),
                        pa.y = La("y", c),
                        S = c > s,
                        s = c,
                        Ha()
                    } else {
                        if (!ga)
                            return;
                        if (ha && (ha = !1,
                        Math.abs(jb.x) >= gb && (jb.x -= _[0].x - lb.x),
                        Math.abs(jb.y) >= gb && (jb.y -= _[0].y - lb.y)),
                        kb.x = hb.x,
                        kb.y = hb.y,
                        0 === jb.x && 0 === jb.y)
                            return;
                        if ("v" === ga && i.closeOnVerticalDrag && !Bb()) {
                            na.y += jb.y,
                            pa.y += jb.y;
                            var k = Ib();
                            return T = !0,
                            Da("onVerticalDrag", k),
                            Fa(k),
                            void Ha()
                        }
                        Hb(Ea(), hb.x, hb.y),
                        Y = !0,
                        da = f.currItem.bounds;
                        var l = Nb("x", jb);
                        l || (Nb("y", jb),
                        Na(pa),
                        Ha())
                    }
            }
        }, Rb = function(a) {
            if (N.isOldAndroid) {
                if (U && "mouseup" === a.type)
                    return;
                a.type.indexOf("touch") > -1 && (clearTimeout(U),
                U = setTimeout(function() {
                    U = 0
                }, 600))
            }
            Da("pointerUp"),
            Eb(a, !1) && a.preventDefault();
            var b;
            if (F) {
                var c = e.arraySearch(mb, a.pointerId, "id");
                if (c > -1)
                    if (b = mb.splice(c, 1)[0],
                    navigator.msPointerEnabled) {
                        var d = {
                            4: "mouse",
                            2: "touch",
                            3: "pen"
                        };
                        b.type = d[a.pointerType],
                        b.type || (b.type = a.pointerType || "mouse")
                    } else
                        b.type = a.pointerType || "mouse"
            }
            var g, h = Mb(a), j = h.length;
            if ("mouseup" === a.type && (j = 0),
            2 === j)
                return _ = null,
                !0;
            1 === j && Ma(lb, h[0]),
            0 !== j || ga || fa || (b || ("mouseup" === a.type ? b = {
                x: a.pageX,
                y: a.pageY,
                type: "mouse"
            } : a.changedTouches && a.changedTouches[0] && (b = {
                x: a.changedTouches[0].pageX,
                y: a.changedTouches[0].pageY,
                type: "touch"
            })),
            Da("touchRelease", a, b));
            var k = -1;
            if (0 === j && (V = !1,
            e.unbind(window, p, f),
            zb(),
            aa ? k = 0 : sb !== -1 && (k = Ea() - sb)),
            sb = 1 === j ? Ea() : -1,
            g = k !== -1 && k < 150 ? "zoom" : "swipe",
            aa && j < 2 && (aa = !1,
            1 === j && (g = "zoomPointerUp"),
            Da("zoomGestureEnded")),
            _ = null,
            Y || X || fa || T)
                if (cb(),
                R || (R = Sb()),
                R.calculateSwipeSpeed("x"),
                T) {
                    var l = Ib();
                    if (l < i.verticalDragRange)
                        f.close();
                    else {
                        var m = pa.y
                          , n = ja;
                        db("verticalDrag", 0, 1, 300, e.easing.cubic.out, function(a) {
                            pa.y = (f.currItem.initialPosition.y - m) * a + m,
                            Fa((1 - n) * a + n),
                            Ha()
                        }),
                        Da("onVerticalDrag", 1)
                    }
                } else {
                    if (($ || fa) && 0 === j) {
                        var o = Ub(g, R);
                        if (o)
                            return;
                        g = "zoomPointerUp"
                    }
                    if (!fa)
                        return "swipe" !== g ? void Wb() : void (!$ && s > f.currItem.fitRatio && Tb(R))
                }
        }, Sb = function() {
            var a, b, c = {
                lastFlickOffset: {},
                lastFlickDist: {},
                lastFlickSpeed: {},
                slowDownRatio: {},
                slowDownRatioReverse: {},
                speedDecelerationRatio: {},
                speedDecelerationRatioAbs: {},
                distanceOffset: {},
                backAnimDestination: {},
                backAnimStarted: {},
                calculateSwipeSpeed: function(d) {
                    ob.length > 1 ? (a = Ea() - Q + 50,
                    b = ob[ob.length - 2][d]) : (a = Ea() - P,
                    b = lb[d]),
                    c.lastFlickOffset[d] = kb[d] - b,
                    c.lastFlickDist[d] = Math.abs(c.lastFlickOffset[d]),
                    c.lastFlickDist[d] > 20 ? c.lastFlickSpeed[d] = c.lastFlickOffset[d] / a : c.lastFlickSpeed[d] = 0,
                    Math.abs(c.lastFlickSpeed[d]) < .1 && (c.lastFlickSpeed[d] = 0),
                    c.slowDownRatio[d] = .95,
                    c.slowDownRatioReverse[d] = 1 - c.slowDownRatio[d],
                    c.speedDecelerationRatio[d] = 1
                },
                calculateOverBoundsAnimOffset: function(a, b) {
                    c.backAnimStarted[a] || (pa[a] > da.min[a] ? c.backAnimDestination[a] = da.min[a] : pa[a] < da.max[a] && (c.backAnimDestination[a] = da.max[a]),
                    void 0 !== c.backAnimDestination[a] && (c.slowDownRatio[a] = .7,
                    c.slowDownRatioReverse[a] = 1 - c.slowDownRatio[a],
                    c.speedDecelerationRatioAbs[a] < .05 && (c.lastFlickSpeed[a] = 0,
                    c.backAnimStarted[a] = !0,
                    db("bounceZoomPan" + a, pa[a], c.backAnimDestination[a], b || 300, e.easing.sine.out, function(b) {
                        pa[a] = b,
                        Ha()
                    }))))
                },
                calculateAnimOffset: function(a) {
                    c.backAnimStarted[a] || (c.speedDecelerationRatio[a] = c.speedDecelerationRatio[a] * (c.slowDownRatio[a] + c.slowDownRatioReverse[a] - c.slowDownRatioReverse[a] * c.timeDiff / 10),
                    c.speedDecelerationRatioAbs[a] = Math.abs(c.lastFlickSpeed[a] * c.speedDecelerationRatio[a]),
                    c.distanceOffset[a] = c.lastFlickSpeed[a] * c.speedDecelerationRatio[a] * c.timeDiff,
                    pa[a] += c.distanceOffset[a])
                },
                panAnimLoop: function() {
                    if ($a.zoomPan && ($a.zoomPan.raf = H(c.panAnimLoop),
                    c.now = Ea(),
                    c.timeDiff = c.now - c.lastNow,
                    c.lastNow = c.now,
                    c.calculateAnimOffset("x"),
                    c.calculateAnimOffset("y"),
                    Ha(),
                    c.calculateOverBoundsAnimOffset("x"),
                    c.calculateOverBoundsAnimOffset("y"),
                    c.speedDecelerationRatioAbs.x < .05 && c.speedDecelerationRatioAbs.y < .05))
                        return pa.x = Math.round(pa.x),
                        pa.y = Math.round(pa.y),
                        Ha(),
                        void ab("zoomPan")
                }
            };
            return c
        }, Tb = function(a) {
            return a.calculateSwipeSpeed("y"),
            da = f.currItem.bounds,
            a.backAnimDestination = {},
            a.backAnimStarted = {},
            Math.abs(a.lastFlickSpeed.x) <= .05 && Math.abs(a.lastFlickSpeed.y) <= .05 ? (a.speedDecelerationRatioAbs.x = a.speedDecelerationRatioAbs.y = 0,
            a.calculateOverBoundsAnimOffset("x"),
            a.calculateOverBoundsAnimOffset("y"),
            !0) : (bb("zoomPan"),
            a.lastNow = Ea(),
            void a.panAnimLoop())
        }, Ub = function(a, b) {
            var c;
            fa || (qb = m);
            var d;
            if ("swipe" === a) {
                var g = kb.x - lb.x
                  , h = b.lastFlickDist.x < 10;
                g > fb && (h || b.lastFlickOffset.x > 20) ? d = -1 : g < -fb && (h || b.lastFlickOffset.x < -20) && (d = 1)
            }
            var j;
            d && (m += d,
            m < 0 ? (m = i.loop ? ac() - 1 : 0,
            j = !0) : m >= ac() && (m = i.loop ? 0 : ac() - 1,
            j = !0),
            j && !i.loop || (ua += d,
            ra -= d,
            c = !0));
            var k, l = ta.x * ra, n = Math.abs(l - tb.x);
            return c || l > tb.x == b.lastFlickSpeed.x > 0 ? (k = Math.abs(b.lastFlickSpeed.x) > 0 ? n / Math.abs(b.lastFlickSpeed.x) : 333,
            k = Math.min(k, 400),
            k = Math.max(k, 250)) : k = 333,
            qb === m && (c = !1),
            fa = !0,
            Da("mainScrollAnimStart"),
            db("mainScroll", tb.x, l, k, e.easing.cubic.out, Ka, function() {
                cb(),
                fa = !1,
                qb = -1,
                (c || qb !== m) && f.updateCurrItem(),
                Da("mainScrollAnimComplete")
            }),
            c && f.updateCurrItem(!0),
            c
        }, Vb = function(a) {
            return 1 / ca * a * t
        }, Wb = function() {
            var a = s
              , b = Ta()
              , c = Ua();
            s < b ? a = b : s > c && (a = c);
            var d, g = 1, h = ja;
            return ia && !S && !ka && s < b ? (f.close(),
            !0) : (ia && (d = function(a) {
                Fa((g - h) * a + h)
            }
            ),
            f.zoomTo(a, 0, 200, e.easing.cubic.out, d),
            !0)
        };
        za("Gestures", {
            publicMethods: {
                initGestures: function() {
                    var a = function(a, b, c, d, e) {
                        A = a + b,
                        B = a + c,
                        C = a + d,
                        D = e ? a + e : ""
                    };
                    F = N.pointerEvent,
                    F && N.touch && (N.touch = !1),
                    F ? navigator.msPointerEnabled ? a("MSPointer", "Down", "Move", "Up", "Cancel") : a("pointer", "down", "move", "up", "cancel") : N.touch ? (a("touch", "start", "move", "end", "cancel"),
                    G = !0) : a("mouse", "down", "move", "up"),
                    p = B + " " + C + " " + D,
                    q = A,
                    F && !G && (G = navigator.maxTouchPoints > 1 || navigator.msMaxTouchPoints > 1),
                    f.likelyTouchDevice = G,
                    r[A] = Ob,
                    r[B] = Pb,
                    r[C] = Rb,
                    D && (r[D] = r[C]),
                    N.touch && (q += " mousedown",
                    p += " mousemove mouseup",
                    r.mousedown = r[A],
                    r.mousemove = r[B],
                    r.mouseup = r[C]),
                    G || (i.allowPanToNext = !1)
                }
            }
        });
        var Xb, Yb, Zb, $b, _b, ac, bc, cc = function(b, c, d, g) {
            Xb && clearTimeout(Xb),
            $b = !0,
            Zb = !0;
            var h;
            b.initialLayout ? (h = b.initialLayout,
            b.initialLayout = null) : h = i.getThumbBoundsFn && i.getThumbBoundsFn(m);
            var j = d ? i.hideAnimationDuration : i.showAnimationDuration
              , k = function() {
                ab("initialZoom"),
                d ? (f.template.removeAttribute("style"),
                f.bg.removeAttribute("style")) : (Fa(1),
                c && (c.style.display = "block"),
                e.addClass(a, "pswp--animated-in"),
                Da("initialZoom" + (d ? "OutEnd" : "InEnd"))),
                g && g(),
                $b = !1
            };
            if (!j || !h || void 0 === h.x)
                return Da("initialZoom" + (d ? "Out" : "In")),
                s = b.initialZoomLevel,
                Ma(pa, b.initialPosition),
                Ha(),
                a.style.opacity = d ? 0 : 1,
                Fa(1),
                void (j ? setTimeout(function() {
                    k()
                }, j) : k());
            var n = function() {
                var c = l
                  , g = !f.currItem.src || f.currItem.loadError || i.showHideOpacity;
                b.miniImg && (b.miniImg.style.webkitBackfaceVisibility = "hidden"),
                d || (s = h.w / b.w,
                pa.x = h.x,
                pa.y = h.y - K,
                f[g ? "template" : "bg"].style.opacity = .001,
                Ha()),
                bb("initialZoom"),
                d && !c && e.removeClass(a, "pswp--animated-in"),
                g && (d ? e[(c ? "remove" : "add") + "Class"](a, "pswp--animate_opacity") : setTimeout(function() {
                    e.addClass(a, "pswp--animate_opacity")
                }, 30)),
                Xb = setTimeout(function() {
                    if (Da("initialZoom" + (d ? "Out" : "In")),
                    d) {
                        var f = h.w / b.w
                          , i = {
                            x: pa.x,
                            y: pa.y
                        }
                          , l = s
                          , m = ja
                          , n = function(b) {
                            1 === b ? (s = f,
                            pa.x = h.x,
                            pa.y = h.y - M) : (s = (f - l) * b + l,
                            pa.x = (h.x - i.x) * b + i.x,
                            pa.y = (h.y - M - i.y) * b + i.y),
                            Ha(),
                            g ? a.style.opacity = 1 - b : Fa(m - b * m)
                        };
                        c ? db("initialZoom", 0, 1, j, e.easing.cubic.out, n, k) : (n(1),
                        Xb = setTimeout(k, j + 20))
                    } else
                        s = b.initialZoomLevel,
                        Ma(pa, b.initialPosition),
                        Ha(),
                        Fa(1),
                        g ? a.style.opacity = 1 : Fa(1),
                        Xb = setTimeout(k, j + 20)
                }, d ? 25 : 90)
            };
            n()
        }, dc = {}, ec = [], fc = {
            index: 0,
            errorMsg: '<div class="pswp__error-msg"><a href="%url%" target="_blank">The image</a> could not be loaded.</div>',
            forceProgressiveLoading: !1,
            preload: [1, 1],
            getNumItemsFn: function() {
                return Yb.length
            }
        }, gc = function() {
            return {
                center: {
                    x: 0,
                    y: 0
                },
                max: {
                    x: 0,
                    y: 0
                },
                min: {
                    x: 0,
                    y: 0
                }
            }
        }, hc = function(a, b, c) {
            var d = a.bounds;
            d.center.x = Math.round((dc.x - b) / 2),
            d.center.y = Math.round((dc.y - c) / 2) + a.vGap.top,
            d.max.x = b > dc.x ? Math.round(dc.x - b) : d.center.x,
            d.max.y = c > dc.y ? Math.round(dc.y - c) + a.vGap.top : d.center.y,
            d.min.x = b > dc.x ? 0 : d.center.x,
            d.min.y = c > dc.y ? a.vGap.top : d.center.y
        }, ic = function(a, b, c) {
            if (a.src && !a.loadError) {
                var d = !c;
                if (d && (a.vGap || (a.vGap = {
                    top: 0,
                    bottom: 0
                }),
                Da("parseVerticalMargin", a)),
                dc.x = b.x,
                dc.y = b.y - a.vGap.top - a.vGap.bottom,
                d) {
                    var e = dc.x / a.w
                      , f = dc.y / a.h;
                    a.fitRatio = e < f ? e : f;
                    var g = i.scaleMode;
                    "orig" === g ? c = 1 : "fit" === g && (c = a.fitRatio),
                    c > 1 && (c = 1),
                    a.initialZoomLevel = c,
                    a.bounds || (a.bounds = gc())
                }
                if (!c)
                    return;
                return hc(a, a.w * c, a.h * c),
                d && c === a.initialZoomLevel && (a.initialPosition = a.bounds.center),
                a.bounds
            }
            return a.w = a.h = 0,
            a.initialZoomLevel = a.fitRatio = 1,
            a.bounds = gc(),
            a.initialPosition = a.bounds.center,
            a.bounds
        }, jc = function(a, b, c, d, e, g) {
            b.loadError || d && (b.imageAppended = !0,
            mc(b, d, b === f.currItem && ya),
            c.appendChild(d),
            g && setTimeout(function() {
                b && b.loaded && b.placeholder && (b.placeholder.style.display = "none",
                b.placeholder = null)
            }, 500))
        }, kc = function(a) {
            a.loading = !0,
            a.loaded = !1;
            var b = a.img = e.createEl("pswp__img", "img")
              , c = function() {
                a.loading = !1,
                a.loaded = !0,
                a.loadComplete ? a.loadComplete(a) : a.img = null,
                b.onload = b.onerror = null,
                b = null
            };
            return b.onload = c,
            b.onerror = function() {
                a.loadError = !0,
                c()
            }
            ,
            b.src = a.src,
            b
        }, lc = function(a, b) {
            if (a.src && a.loadError && a.container)
                return b && (a.container.innerHTML = ""),
                a.container.innerHTML = i.errorMsg.replace("%url%", a.src),
                !0
        }, mc = function(a, b, c) {
            if (a.src) {
                b || (b = a.container.lastChild);
                var d = c ? a.w : Math.round(a.w * a.fitRatio)
                  , e = c ? a.h : Math.round(a.h * a.fitRatio);
                a.placeholder && !a.loaded && (a.placeholder.style.width = d + "px",
                a.placeholder.style.height = e + "px"),
                b.style.width = d + "px",
                b.style.height = e + "px"
            }
        }, nc = function() {
            if (ec.length) {
                for (var a, b = 0; b < ec.length; b++)
                    a = ec[b],
                    a.holder.index === a.index && jc(a.index, a.item, a.baseDiv, a.img, !1, a.clearPlaceholder);
                ec = []
            }
        };
        za("Controller", {
            publicMethods: {
                lazyLoadItem: function(a) {
                    a = Aa(a);
                    var b = _b(a);
                    b && (!b.loaded && !b.loading || x) && (Da("gettingData", a, b),
                    b.src && kc(b))
                },
                initController: function() {
                    e.extend(i, fc, !0),
                    f.items = Yb = c,
                    _b = f.getItemAt,
                    ac = i.getNumItemsFn,
                    bc = i.loop,
                    ac() < 3 && (i.loop = !1),
                    Ca("beforeChange", function(a) {
                        var b, c = i.preload, d = null === a || a >= 0, e = Math.min(c[0], ac()), g = Math.min(c[1], ac());
                        for (b = 1; b <= (d ? g : e); b++)
                            f.lazyLoadItem(m + b);
                        for (b = 1; b <= (d ? e : g); b++)
                            f.lazyLoadItem(m - b)
                    }),
                    Ca("initialLayout", function() {
                        f.currItem.initialLayout = i.getThumbBoundsFn && i.getThumbBoundsFn(m)
                    }),
                    Ca("mainScrollAnimComplete", nc),
                    Ca("initialZoomInEnd", nc),
                    Ca("destroy", function() {
                        for (var a, b = 0; b < Yb.length; b++)
                            a = Yb[b],
                            a.container && (a.container = null),
                            a.placeholder && (a.placeholder = null),
                            a.img && (a.img = null),
                            a.preloader && (a.preloader = null),
                            a.loadError && (a.loaded = a.loadError = !1);
                        ec = null
                    })
                },
                getItemAt: function(a) {
                    return a >= 0 && (void 0 !== Yb[a] && Yb[a])
                },
                allowProgressiveImg: function() {
                    return i.forceProgressiveLoading || !G || i.mouseUsed || screen.width > 1200
                },
                setContent: function(a, b) {
                    i.loop && (b = Aa(b));
                    var c = f.getItemAt(a.index);
                    c && (c.container = null);
                    var d, g = f.getItemAt(b);
                    if (!g)
                        return void (a.el.innerHTML = "");
                    Da("gettingData", b, g),
                    a.index = b,
                    a.item = g;
                    var h = g.container = e.createEl("pswp__zoom-wrap");
                    if (!g.src && g.html && (g.html.tagName ? h.appendChild(g.html) : h.innerHTML = g.html),
                    lc(g),
                    ic(g, qa),
                    !g.src || g.loadError || g.loaded)
                        g.src && !g.loadError && (d = e.createEl("pswp__img", "img"),
                        d.style.opacity = 1,
                        d.src = g.src,
                        mc(g, d),
                        jc(b, g, h, d, !0));
                    else {
                        if (g.loadComplete = function(c) {
                            if (j) {
                                if (a && a.index === b) {
                                    if (lc(c, !0))
                                        return c.loadComplete = c.img = null,
                                        ic(c, qa),
                                        Ia(c),
                                        void (a.index === m && f.updateCurrZoomItem());
                                    c.imageAppended ? !$b && c.placeholder && (c.placeholder.style.display = "none",
                                    c.placeholder = null) : N.transform && (fa || $b) ? ec.push({
                                        item: c,
                                        baseDiv: h,
                                        img: c.img,
                                        index: b,
                                        holder: a,
                                        clearPlaceholder: !0
                                    }) : jc(b, c, h, c.img, fa || $b, !0)
                                }
                                c.loadComplete = null,
                                c.img = null,
                                Da("imageLoadComplete", b, c)
                            }
                        }
                        ,
                        e.features.transform) {
                            var k = "pswp__img pswp__img--placeholder";
                            k += g.msrc ? "" : " pswp__img--placeholder--blank";
                            var l = e.createEl(k, g.msrc ? "img" : "");
                            g.msrc && (l.src = g.msrc),
                            mc(g, l),
                            h.appendChild(l),
                            g.placeholder = l
                        }
                        g.loading || kc(g),
                        f.allowProgressiveImg() && (!Zb && N.transform ? ec.push({
                            item: g,
                            baseDiv: h,
                            img: g.img,
                            index: b,
                            holder: a
                        }) : jc(b, g, h, g.img, !0, !0))
                    }
                    Zb || b !== m ? Ia(g) : (ea = h.style,
                    cc(g, d || g.img)),
                    a.el.innerHTML = "",
                    a.el.appendChild(h)
                },
                cleanSlide: function(a) {
                    a.img && (a.img.onload = a.img.onerror = null),
                    a.loaded = a.loading = a.img = a.imageAppended = !1
                }
            }
        });
        var oc, pc = {}, qc = function(a, b, c) {
            var d = document.createEvent("CustomEvent")
              , e = {
                origEvent: a,
                target: a.target,
                releasePoint: b,
                pointerType: c || "touch"
            };
            d.initCustomEvent("pswpTap", !0, !0, e),
            a.target.dispatchEvent(d)
        };
        za("Tap", {
            publicMethods: {
                initTap: function() {
                    Ca("firstTouchStart", f.onTapStart),
                    Ca("touchRelease", f.onTapRelease),
                    Ca("destroy", function() {
                        pc = {},
                        oc = null
                    })
                },
                onTapStart: function(a) {
                    a.length > 1 && (clearTimeout(oc),
                    oc = null)
                },
                onTapRelease: function(a, b) {
                    if (b && !Y && !W && !_a) {
                        var c = b;
                        if (oc && (clearTimeout(oc),
                        oc = null,
                        xb(c, pc)))
                            return void Da("doubleTap", c);
                        if ("mouse" === b.type)
                            return void qc(a, b, "mouse");
                        var d = a.target.tagName.toUpperCase();
                        if ("BUTTON" === d || e.hasClass(a.target, "pswp__single-tap"))
                            return void qc(a, b);
                        Ma(pc, c),
                        oc = setTimeout(function() {
                            qc(a, b),
                            oc = null
                        }, 300)
                    }
                }
            }
        });
        var rc;
        za("DesktopZoom", {
            publicMethods: {
                initDesktopZoom: function() {
                    L || (G ? Ca("mouseUsed", function() {
                        f.setupDesktopZoom()
                    }) : f.setupDesktopZoom(!0))
                },
                setupDesktopZoom: function(b) {
                    rc = {};
                    var c = "wheel mousewheel DOMMouseScroll";
                    Ca("bindEvents", function() {
                        e.bind(a, c, f.handleMouseWheel)
                    }),
                    Ca("unbindEvents", function() {
                        rc && e.unbind(a, c, f.handleMouseWheel)
                    }),
                    f.mouseZoomedIn = !1;
                    var d, g = function() {
                        f.mouseZoomedIn && (e.removeClass(a, "pswp--zoomed-in"),
                        f.mouseZoomedIn = !1),
                        s < 1 ? e.addClass(a, "pswp--zoom-allowed") : e.removeClass(a, "pswp--zoom-allowed"),
                        h()
                    }, h = function() {
                        d && (e.removeClass(a, "pswp--dragging"),
                        d = !1)
                    };
                    Ca("resize", g),
                    Ca("afterChange", g),
                    Ca("pointerDown", function() {
                        f.mouseZoomedIn && (d = !0,
                        e.addClass(a, "pswp--dragging"))
                    }),
                    Ca("pointerUp", h),
                    b || g()
                },
                handleMouseWheel: function(a) {
                    if (s <= f.currItem.fitRatio)
                        return i.modal && (!i.closeOnScroll || _a || V ? a.preventDefault() : E && Math.abs(a.deltaY) > 2 && (l = !0,
                        f.close())),
                        !0;
                    if (a.stopPropagation(),
                    rc.x = 0,
                    "deltaX"in a)
                        1 === a.deltaMode ? (rc.x = 18 * a.deltaX,
                        rc.y = 18 * a.deltaY) : (rc.x = a.deltaX,
                        rc.y = a.deltaY);
                    else if ("wheelDelta"in a)
                        a.wheelDeltaX && (rc.x = -.16 * a.wheelDeltaX),
                        a.wheelDeltaY ? rc.y = -.16 * a.wheelDeltaY : rc.y = -.16 * a.wheelDelta;
                    else {
                        if (!("detail"in a))
                            return;
                        rc.y = a.detail
                    }
                    Sa(s, !0);
                    var b = pa.x - rc.x
                      , c = pa.y - rc.y;
                    (i.modal || b <= da.min.x && b >= da.max.x && c <= da.min.y && c >= da.max.y) && a.preventDefault(),
                    f.panTo(b, c)
                },
                toggleDesktopZoom: function(b) {
                    b = b || {
                        x: qa.x / 2 + sa.x,
                        y: qa.y / 2 + sa.y
                    };
                    var c = i.getDoubleTapZoom(!0, f.currItem)
                      , d = s === c;
                    f.mouseZoomedIn = !d,
                    f.zoomTo(d ? f.currItem.initialZoomLevel : c, b, 333),
                    e[(d ? "remove" : "add") + "Class"](a, "pswp--zoomed-in")
                }
            }
        });
        var sc, tc, uc, vc, wc, xc, yc, zc, Ac, Bc, Cc, Dc, Ec = {
            history: !0,
            galleryUID: 1
        }, Fc = function() {
            return Cc.hash.substring(1)
        }, Gc = function() {
            sc && clearTimeout(sc),
            uc && clearTimeout(uc)
        }, Hc = function() {
            var a = Fc()
              , b = {};
            if (a.length < 5)
                return b;
            var c, d = a.split("&");
            for (c = 0; c < d.length; c++)
                if (d[c]) {
                    var e = d[c].split("=");
                    e.length < 2 || (b[e[0]] = e[1])
                }
            if (i.galleryPIDs) {
                var f = b.pid;
                for (b.pid = 0,
                c = 0; c < Yb.length; c++)
                    if (Yb[c].pid === f) {
                        b.pid = c;
                        break
                    }
            } else
                b.pid = parseInt(b.pid, 10) - 1;
            return b.pid < 0 && (b.pid = 0),
            b
        }, Ic = function() {
            if (uc && clearTimeout(uc),
            _a || V)
                return void (uc = setTimeout(Ic, 500));
            vc ? clearTimeout(tc) : vc = !0;
            var a = m + 1
              , b = _b(m);
            b.hasOwnProperty("pid") && (a = b.pid);
            var c = yc + "&gid=" + i.galleryUID + "&pid=" + a;
            zc || Cc.hash.indexOf(c) === -1 && (Bc = !0);
            var d = Cc.href.split("#")[0] + "#" + c;
            Dc ? "#" + c !== window.location.hash && history[zc ? "replaceState" : "pushState"]("", document.title, d) : zc ? Cc.replace(d) : Cc.hash = c,
            zc = !0,
            tc = setTimeout(function() {
                vc = !1
            }, 60)
        };
        za("History", {
            publicMethods: {
                initHistory: function() {
                    if (e.extend(i, Ec, !0),
                    i.history) {
                        Cc = window.location,
                        Bc = !1,
                        Ac = !1,
                        zc = !1,
                        yc = Fc(),
                        Dc = "pushState"in history,
                        yc.indexOf("gid=") > -1 && (yc = yc.split("&gid=")[0],
                        yc = yc.split("?gid=")[0]),
                        Ca("afterChange", f.updateURL),
                        Ca("unbindEvents", function() {
                            e.unbind(window, "hashchange", f.onHashChange)
                        });
                        var a = function() {
                            xc = !0,
                            Ac || (Bc ? history.back() : yc ? Cc.hash = yc : Dc ? history.pushState("", document.title, Cc.pathname + Cc.search) : Cc.hash = ""),
                            Gc()
                        };
                        Ca("unbindEvents", function() {
                            l && a()
                        }),
                        Ca("destroy", function() {
                            xc || a()
                        }),
                        Ca("firstUpdate", function() {
                            m = Hc().pid
                        });
                        var b = yc.indexOf("pid=");
                        b > -1 && (yc = yc.substring(0, b),
                        "&" === yc.slice(-1) && (yc = yc.slice(0, -1))),
                        setTimeout(function() {
                            j && e.bind(window, "hashchange", f.onHashChange)
                        }, 40)
                    }
                },
                onHashChange: function() {
                    return Fc() === yc ? (Ac = !0,
                    void f.close()) : void (vc || (wc = !0,
                    f.goTo(Hc().pid),
                    wc = !1))
                },
                updateURL: function() {
                    Gc(),
                    wc || (zc ? sc = setTimeout(Ic, 800) : Ic())
                }
            }
        }),
        e.extend(f, eb)
    };
    return a
});
